home *** CD-ROM | disk | FTP | other *** search
- OPT MODULE
-
- -> vslider working okey.
- -> hslider untested.
-
- DEF g_kcol, g_fcol, g_bcol, g_sx, g_sy, g_sw, g_sh
-
- DEF g_sv, g_kh
-
- EXPORT PROC initVSlider(sx,sy,sw,sh,knobcol=1,fillcol=2,bordcol=1)
- g_sx := sx
- g_sy := sy
- g_sw := sw
- g_sh := sh
- g_kcol := knobcol
- g_fcol := fillcol
- g_bcol := bordcol
- g_kh := NIL
- g_sv := NIL -> slider vert pos
- ENDPROC
-
- EXPORT PROC setVSlider(th,eh,tv)
- -> knob hight
- g_kh := Min(Max(g_sh * eh / Max(th,1), g_sw/2), g_sh)
- -> knob vert pos
- g_sv := (g_sh-g_kh) * tv / Max(th-eh, 1)
- ENDPROC
-
- EXPORT PROC paintVSlider(rp)
- DEF sx, sy, sw, sh, sm, kh_2
-
- sx := g_sx
- sy := g_sy
- sw := g_sw
- sh := g_sh
-
- SetAPen(rp,g_bcol) ; RectFill(rp,sx, sy, sw+sx, sh+sy) -> borders
-
- sx := sx + 1
- sy := sy + 1
- sw := sw - 1
- sh := sh
-
- SetAPen(rp,g_fcol) ; RectFill(rp,sx, sy, sx+sw, sy+sh) -> fill
-
- kh_2 := g_kh / 2
- sm := sy + kh_2 + g_sv
-
- SetAPen(rp,g_kcol) ; RectFill(rp,sx,sm-kh_2,sx+sw,sm+kh_2) -> knob
-
- ENDPROC
-
- -> jan03
-
- -> returns 0=outside / 1=page up / 2=page down / 3=on knob.
- EXPORT PROC vSliderHit(x, y)
- /* outside ? */
- IF x < (g_sx+1) THEN RETURN 0
- IF x > (g_sx+g_sw) THEN RETURN 0
- IF y < (g_sy) THEN RETURN 0
- IF y > (g_sy+g_sh) THEN RETURN 0
- /* above knob ? */
- IF y < (g_sy+g_sv) THEN RETURN 1
- /* below knob ? */
- IF y > (g_sy+g_sv+g_kh) THEN RETURN 2
- ENDPROC 3 -> on it !
-
- EXPORT PROC setVSliderMY(mouseY)
- DEF ymin, ymax
- ymin := g_sy+(g_kh/2)
- ymax := g_sy+g_sh-(g_kh/2)
- mouseY := Max(ymin,mouseY)
- mouseY := Min(ymax,mouseY)
- g_sv := mouseY - (g_sy+(g_kh/2))
- ENDPROC
-
- EXPORT PROC getVSlider(th, txheight)
- DEF thpixels, a, tvpixels, tv
- thpixels := Mul(th,txheight)
- a := Div(thpixels,g_sh)
- tvpixels := Mul(g_sv,a)
- tv := Div(tvpixels,txheight)
- ENDPROC tv
-